package com.krubi.model;

import static javax.persistence.GenerationType.IDENTITY;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.Table;
import javax.persistence.ManyToMany;

@Entity
@Table(name = "roles")
public class Rol 
{
	@Id
	@Column(name="id", unique=true, nullable=false )
	@GeneratedValue( strategy = IDENTITY )
	private long id;
	
	@Column(name="nombre", unique=true, nullable=false )
	private String nombre;
	
	@ManyToMany(mappedBy="roles",
			targetEntity=Permiso.class,
			cascade={CascadeType.PERSIST, CascadeType.MERGE})
	private List<Permiso> permisos;
		
	@ManyToMany(targetEntity=Rol.class,
			cascade={CascadeType.PERSIST, CascadeType.MERGE})
	@JoinTable(name="roles_x_grupos_usuarios",
			joinColumns=@JoinColumn(name="id_grupo_usuarios"),
			inverseJoinColumns=@JoinColumn(name="id_rol"))		
	private List<GrupoUsuarios> gruposUsuarios;
	
	public long getId()
	{
		return id;
	}

	public void setId(long pId) 
	{
		id = pId;
	}

	public String getNombre() 
	{
		return nombre;
	}

	public void setNombre(String pNombre) 
	{
		nombre = pNombre;
	}

	public List<Permiso> getPermisos() 
	{
		return permisos;
	}

	public void setPermisos(List<Permiso> pPermisos) 
	{
		permisos = pPermisos;
	}

	public List<GrupoUsuarios> getGruposUsuarios()
	{
		return gruposUsuarios;
	}

	public void set_grupoUsuarios(List<GrupoUsuarios> pGruposUsuarios)
	{
		gruposUsuarios = pGruposUsuarios;
	}
	
}
